第二十一讲 单比例的Z检验
在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。
各位同学,大家好呀!今天我们将进入一个新的领域,针对比例数据(%)进行统计学差异检验。今天我们从“ 单比例的Z检验”开始。
当只有两个组别时, “单比例Z检验”用于将观察到的比例与理论比例进行比较。
例如,我们有一组老鼠,其中一半是雄性,另一半是雌性(p = 0.5 = 50%)。这些小鼠中的一些(n = 160)已发展出自发性癌症,包括95例雄性和65例雌性。
研究问题,癌症对男性的影响是否不同于女性?
在这种情况下:
事件次数(男性患有癌症)是95次
观察到的男性事件比例(p0)是95/160
观察到的女性事件比例(q)是1- p0
预期男性的事件比例(pe)是0.5(50%)
观察数(n)是160
典型的研究问题是:
是否观察到男性比例(p0)等于预期比例(pe)?
是否观察到男性比例(p0)小于预期比例(pe)?
是否观察到男性比例(p0)大于预期比例(pe)?
在统计数据中,我们可以定义相应的原假设(H0) 如下:
H0:p0 = pe
H0:p0 ≤ pe
H0:p0 ≥ pe
相应的备择假设(H1)如下:
H1:p0 ≠ pe(不同)
H1:p0 > pe(大于)
H1:p0 < pe(小于)
假设1)称为双向检验
假设2)和3)称为单向检验
检验统计量(也称为z-test)可以计算如下:
哪里,
p0 是观察到的比例
q = 1 –p0
pe是预期的比例
n 是样本量
如果 | z | < 1.96,则实际比例与预期比例差异不明显(alpha = 0.05)。
如果 | z | ≥ 1.96,则实际比例与预期比例差异明显(alpha = 0.05)。
可以在z界值表中读取与z 统计量对应的显着性水平(p值)。
P0的95%置信区间定义如下:
z统计量的公式仅在样本数量(n)足够大时适用。即n*p0和n*q都要≥ 5。例如,如果 p0= 0.1,那么n 应该至少为50。
3.1 R函数
binom.test()和prop.test()
R函数binom.test()和prop.test()可用于执行单比例z检验:
binom.test():计算精确的二项式检验。样本量较小时推荐使用
prop.test():当样本量较大(N> 30)时可以使用。它使用二项式的分布在较大样本中与正态分布近似的原理。
这两个函数的语法基本相同。简化格式如下:
binom.test(x, n, p = 0.5, alternative = "two.sided")
prop.test(x, n, p = NULL, alternative = "two.sided",
correct = TRUE)
x:事件发生次数
n:试验总数
p:检验的理论概率,当p = NULL时,默认各组间比例均匀分布,比如男女两组的话即为0.5。
correct:表示在可能的情况下是否进行Yates’连续性校正的逻辑。
默认情况下,函数prop.test()使用Yates连续性校正,如果预期事件发生次数(n*p0)或不发生次数(n*q)小于5,则这个选项会发动技能,进行矫正。
如果您不希望进行校正,请使用correct= FALSE 。correct的默认值是TURE。(如果要使结果与数学手工计算的未矫正的z检验结果一模一样,必须将此选项设置为FALSE 。)
3.2 单比例z检验的R实现
研究问题,癌症对男性的影响是否不同于女性?
这里不需要导入数据,因为数据很简单,就只有已知的
事件次数(男性患有癌症)是95次
观察到的男性事件比例(p0)是95/160
观察到的女性事件比例(q)是1- p0
预期男性的事件比例(pe)是0.5(50%)
观察数(n)是160
我们将使用prop.test()函数
res <- prop.test(x = 95, n = 160, p = 0.5,
correct = FALSE)
res
输出结果
1-sample proportions test without continuity correction
data: 95 out of 160, null probability 0.5
X-squared = 5.625, df = 1, p-value = 0.01771
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.5163169 0.6667870
sample estimates:
p
0.59375
该函数返回:
皮尔逊卡方检验统计量的值:5.625。
p值:0.0177
95%的置信区间:0.516 – 0.667
实际的事件发生比例(男性罹患癌症的比例):0.594
如果要测试男性癌症患者的比例是否小于0.5(单向测试),请输入以下内容
prop.test(x = 95, n = 160, p = 0.5, correct = FALSE,alternative = "less")
或者,如果要测试男性癌症患者的比例是否大于0.5(单向测试),请输入以下内容
prop.test(x = 95, n = 160, p = 0.5, correct = FALSE,alternative = "greater")
3.3 结果解释
检验的p值为 0.0177,小于显着性水平alpha = 0.05。我们可以得出结论,男性患癌症的比例与0.5显着不同,p值 = 0.01771。我们可以进一步做分析来测试男性癌症患者的比例是否大于0.5(单向测试)。
3.4 访问prop.test()的返回值
prop.test()函数的结果是包含以下内容:
statistic:事件发生次数
parameter:试验总次数
p.value:z检验的p值
conf.int:事件概率的置信区间。
estimate:实际事件的发生概率。
用于获取这些值的R代码的格式如下:
res$p.value
[1] 0.01770607
res$estimate
p
0.59375
res$conf.int
[1] 0.5163169 0.6667870
attr(,"conf.level")
[1] 0.95
好了,本期讲解就先到这里。小伙伴们赶紧试起来吧。
当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。
快扫二维码撩客服,
带你进入投必得医学交流群,
让我们共同进步!
↓↓
- END -
长按二维码关注「投必得医学」,更多科研干货在等你!